<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>iOS开发常用的三方库 | KnightSama‘s Blog</title>
    <meta name="description" content="Hello, my friend!">
    <link rel="icon" href="/favicon.ico">
  <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
  <script src="https://cdn.jsdelivr.net/npm/react/umd/react.production.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.production.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/@babel/standalone/babel.min.js"></script>
    
    <link rel="preload" href="/assets/css/0.styles.c4ea52a5.css" as="style"><link rel="preload" href="/assets/js/app.a2483de7.js" as="script"><link rel="preload" href="/assets/js/4.0078dadf.js" as="script"><link rel="preload" href="/assets/js/1.c3e7d2b0.js" as="script"><link rel="preload" href="/assets/js/13.229fa478.js" as="script"><link rel="prefetch" href="/assets/js/10.265e4f40.js"><link rel="prefetch" href="/assets/js/11.a3a2f8c1.js"><link rel="prefetch" href="/assets/js/12.1910f8cc.js"><link rel="prefetch" href="/assets/js/14.c27d4a17.js"><link rel="prefetch" href="/assets/js/15.92adafd4.js"><link rel="prefetch" href="/assets/js/16.bcee7c14.js"><link rel="prefetch" href="/assets/js/17.ee1bcf41.js"><link rel="prefetch" href="/assets/js/18.fa3c3a4e.js"><link rel="prefetch" href="/assets/js/19.1a943c57.js"><link rel="prefetch" href="/assets/js/20.44781dae.js"><link rel="prefetch" href="/assets/js/21.1fe46223.js"><link rel="prefetch" href="/assets/js/22.6f7d46c2.js"><link rel="prefetch" href="/assets/js/23.56223d02.js"><link rel="prefetch" href="/assets/js/24.e7cad43b.js"><link rel="prefetch" href="/assets/js/25.b2902552.js"><link rel="prefetch" href="/assets/js/26.70698c07.js"><link rel="prefetch" href="/assets/js/27.6ee3d263.js"><link rel="prefetch" href="/assets/js/28.ce131de6.js"><link rel="prefetch" href="/assets/js/29.90552487.js"><link rel="prefetch" href="/assets/js/30.b3291ccc.js"><link rel="prefetch" href="/assets/js/31.ea8c441e.js"><link rel="prefetch" href="/assets/js/32.3e29bbeb.js"><link rel="prefetch" href="/assets/js/33.65e78c5e.js"><link rel="prefetch" href="/assets/js/34.3ba19d7c.js"><link rel="prefetch" href="/assets/js/35.66d3fc4a.js"><link rel="prefetch" href="/assets/js/36.f5725281.js"><link rel="prefetch" href="/assets/js/37.f5b0b5ff.js"><link rel="prefetch" href="/assets/js/38.3cae3054.js"><link rel="prefetch" href="/assets/js/39.47dc1ffe.js"><link rel="prefetch" href="/assets/js/5.f0714e2e.js"><link rel="prefetch" href="/assets/js/6.53240a5f.js"><link rel="prefetch" href="/assets/js/7.dc126a6b.js"><link rel="prefetch" href="/assets/js/8.86452400.js"><link rel="prefetch" href="/assets/js/9.16ef06de.js"><link rel="prefetch" href="/assets/js/vendors~flowchart.734d5d92.js">
    <link rel="stylesheet" href="/assets/css/0.styles.c4ea52a5.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div><div class="theme-container" data-v-0cb1c278><div data-v-0cb1c278><div id="loader-wrapper" class="loading-wrapper" data-v-4b73742e data-v-0cb1c278 data-v-0cb1c278><div class="loader-main" data-v-4b73742e><div data-v-4b73742e></div><div data-v-4b73742e></div><div data-v-4b73742e></div><div data-v-4b73742e></div></div> <!----> <!----></div> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-da0660ba data-v-0cb1c278 data-v-0cb1c278><h3 class="title" style="display:none;" data-v-da0660ba data-v-da0660ba>KnightSama‘s Blog</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-da0660ba data-v-da0660ba><input type="password" value="" data-v-da0660ba> <span data-v-da0660ba>Konck! Knock!</span> <button data-v-da0660ba>OK</button></label> <div class="footer" style="display:none;" data-v-da0660ba data-v-da0660ba><span data-v-da0660ba><i class="iconfont reco-theme" data-v-da0660ba></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-da0660ba>vuePress-theme-reco</a></span> <span data-v-da0660ba><i class="iconfont reco-copyright" data-v-da0660ba></i> <a data-v-da0660ba><span data-v-da0660ba>KnightSama</span>
            
          <!---->
          2021
        </a></span></div></div> <div class="hide" data-v-0cb1c278><header class="navbar" data-v-0cb1c278><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/Misaka.jpg" alt="KnightSama‘s Blog" class="logo"> <span class="site-name">KnightSama‘s Blog</span></a> <div class="links"><div class="color-picker"><a class="color-button"><i class="iconfont reco-color"></i></a> <div class="color-picker-menu" style="display:none;"><div class="mode-options"><h4 class="title">Choose mode</h4> <ul class="color-mode-options"><li class="dark">dark</li><li class="auto active">auto</li><li class="light">light</li></ul></div></div></div> <div class="search-box"><i class="iconfont reco-search"></i> <input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  首页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/iOS/" class="nav-link"><i class="iconfont undefined"></i>
  iOS
</a></li><li class="dropdown-item"><!----> <a href="/categories/集锦/" class="nav-link"><i class="iconfont undefined"></i>
  集锦
</a></li><li class="dropdown-item"><!----> <a href="/categories/JavaScript/" class="nav-link"><i class="iconfont undefined"></i>
  JavaScript
</a></li><li class="dropdown-item"><!----> <a href="/categories/Github/" class="nav-link"><i class="iconfont undefined"></i>
  Github
</a></li><li class="dropdown-item"><!----> <a href="/categories/Python/" class="nav-link"><i class="iconfont undefined"></i>
  Python
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><a href="https://github.com/KnightSama" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-github"></i>
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-0cb1c278></div> <aside class="sidebar" data-v-0cb1c278><div class="personal-info-wrapper" data-v-4a3def3c><img src="/Misaka.jpg" alt="author-avatar" class="personal-img" data-v-4a3def3c> <h3 class="name" data-v-4a3def3c>
    KnightSama
  </h3> <div class="num" data-v-4a3def3c><div data-v-4a3def3c><h3 data-v-4a3def3c>27</h3> <h6 data-v-4a3def3c>文章</h6></div> <div data-v-4a3def3c><h3 data-v-4a3def3c>14</h3> <h6 data-v-4a3def3c>标签</h6></div></div> <hr data-v-4a3def3c></div> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  首页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/iOS/" class="nav-link"><i class="iconfont undefined"></i>
  iOS
</a></li><li class="dropdown-item"><!----> <a href="/categories/集锦/" class="nav-link"><i class="iconfont undefined"></i>
  集锦
</a></li><li class="dropdown-item"><!----> <a href="/categories/JavaScript/" class="nav-link"><i class="iconfont undefined"></i>
  JavaScript
</a></li><li class="dropdown-item"><!----> <a href="/categories/Github/" class="nav-link"><i class="iconfont undefined"></i>
  Github
</a></li><li class="dropdown-item"><!----> <a href="/categories/Python/" class="nav-link"><i class="iconfont undefined"></i>
  Python
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><a href="https://github.com/KnightSama" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-github"></i>
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav>  <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>iOS开发常用的三方库</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/Views/20160422.html#视图功能" class="sidebar-link">视图功能</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#布局框架" class="sidebar-link">布局框架</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#独立视图渲染框架" class="sidebar-link">独立视图渲染框架</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#视图动画" class="sidebar-link">视图动画</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#视图转场动画" class="sidebar-link">视图转场动画</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#视图调试" class="sidebar-link">视图调试</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#测试视图" class="sidebar-link">测试视图</a></li></ul></li><li><a href="/Views/20160422.html#自定义视图" class="sidebar-link">自定义视图</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#轮播滚动视图" class="sidebar-link">轮播滚动视图</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#弹窗" class="sidebar-link">弹窗</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#浏览视图-图片、相册、文件" class="sidebar-link">浏览视图(图片、相册、文件)</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#引导页-广告视图" class="sidebar-link">引导页/广告视图</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#自定义按钮" class="sidebar-link">自定义按钮</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#选择视图" class="sidebar-link">选择视图</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#导航视图-tabbar、navibar" class="sidebar-link">导航视图(TabBar、NaviBar)</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#功能视图-搜索、手势、二维码" class="sidebar-link">功能视图(搜索、手势、二维码...)</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#系统功能增强视图-视图圆角" class="sidebar-link">系统功能增强视图(视图圆角...)</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#列表视图" class="sidebar-link">列表视图</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#列表视图增强" class="sidebar-link">列表视图增强</a></li></ul></li><li><a href="/Views/20160422.html#网络功能" class="sidebar-link">网络功能</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#网络请求" class="sidebar-link">网络请求</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#网络下载" class="sidebar-link">网络下载</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#网络扩展" class="sidebar-link">网络扩展</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#web相关" class="sidebar-link">Web相关</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#socket" class="sidebar-link">Socket</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#http服务器" class="sidebar-link">Http服务器</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#邮件" class="sidebar-link">邮件</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#网络检测" class="sidebar-link">网络检测</a></li></ul></li><li><a href="/Views/20160422.html#图像与绘图相关功能" class="sidebar-link">图像与绘图相关功能</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#图像处理" class="sidebar-link">图像处理</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#图形与绘图" class="sidebar-link">图形与绘图</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#图表" class="sidebar-link">图表</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#色彩" class="sidebar-link">色彩</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#富文本" class="sidebar-link">富文本</a></li></ul></li><li><a href="/Views/20160422.html#音视频相关功能" class="sidebar-link">音视频相关功能</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#播放器" class="sidebar-link">播放器</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#编解码" class="sidebar-link">编解码</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#弹幕" class="sidebar-link">弹幕</a></li></ul></li><li><a href="/Views/20160422.html#安全相关" class="sidebar-link">安全相关</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#加解密" class="sidebar-link">加解密</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#权限请求" class="sidebar-link">权限请求</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#app防护" class="sidebar-link">APP防护</a></li></ul></li><li><a href="/Views/20160422.html#数据与文件处理" class="sidebar-link">数据与文件处理</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#数据解析" class="sidebar-link">数据解析</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#文件管理" class="sidebar-link">文件管理</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#压缩解压缩" class="sidebar-link">压缩解压缩</a></li></ul></li><li><a href="/Views/20160422.html#数据归档" class="sidebar-link">数据归档</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#数据库" class="sidebar-link">数据库</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#序列化" class="sidebar-link">序列化</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#钥匙串" class="sidebar-link">钥匙串</a></li></ul></li><li><a href="/Views/20160422.html#日志与异常处理" class="sidebar-link">日志与异常处理</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#日志记录" class="sidebar-link">日志记录</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#异常检测" class="sidebar-link">异常检测</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#异常处理" class="sidebar-link">异常处理</a></li></ul></li><li><a href="/Views/20160422.html#系统相关" class="sidebar-link">系统相关</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#系统信息" class="sidebar-link">系统信息</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#内购" class="sidebar-link">内购</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#系统扩展" class="sidebar-link">系统扩展</a></li></ul></li><li><a href="/Views/20160422.html#其他功能" class="sidebar-link">其他功能</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/Views/20160422.html#异步编程与响应式框架" class="sidebar-link">异步编程与响应式框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/Views/20160422.html#异步编程" class="sidebar-link">异步编程</a></li><li class="sidebar-sub-header"><a href="/Views/20160422.html#响应式" class="sidebar-link">响应式</a></li></ul></li><li><a href="/Views/20160422.html#热更新" class="sidebar-link">热更新</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/Views/20160422.html#aop" class="sidebar-link">AOP</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/Views/20160422.html#综合框架" class="sidebar-link">综合框架</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-da0660ba data-v-0cb1c278><h3 class="title" style="display:none;" data-v-da0660ba data-v-da0660ba>iOS开发常用的三方库</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-da0660ba data-v-da0660ba><input type="password" value="" data-v-da0660ba> <span data-v-da0660ba>Konck! Knock!</span> <button data-v-da0660ba>OK</button></label> <div class="footer" style="display:none;" data-v-da0660ba data-v-da0660ba><span data-v-da0660ba><i class="iconfont reco-theme" data-v-da0660ba></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-da0660ba>vuePress-theme-reco</a></span> <span data-v-da0660ba><i class="iconfont reco-copyright" data-v-da0660ba></i> <a data-v-da0660ba><span data-v-da0660ba>KnightSama</span>
            
          <!---->
          2021
        </a></span></div></div> <div data-v-0cb1c278><main class="page"><div class="sidebar-open-close"><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <!----> <div class="page-title" style="display:none;"><h1>iOS开发常用的三方库</h1> <hr> <div data-v-73367bb4><i class="iconfont reco-account" data-v-73367bb4><span data-v-73367bb4>KnightSama</span></i> <i class="iconfont reco-date" data-v-73367bb4><span data-v-73367bb4>2016-04-22</span></i> <i class="iconfont reco-eye" data-v-73367bb4><span id="/Views/20160422.html" data-flag-title="Your Article Title" class="leancloud-visitors" data-v-73367bb4><a class="leancloud-visitors-count" style="font-size:.9rem;font-weight:normal;color:#999;"></a></span></i> <i class="iconfont reco-tag tags" data-v-73367bb4><span class="tag-item" data-v-73367bb4>
      iOS
    </span></i></div></div> <div class="theme-reco-content content__default" style="display:none;"><p>这里记录了 iOS 开发中常用的第三方框架，包含了 Objective-C 与 Swift 版本
</p> <h2 id="视图功能"><a href="#视图功能" class="header-anchor">#</a> 视图功能</h2> <h3 id="布局框架"><a href="#布局框架" class="header-anchor">#</a> 布局框架</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/SnapKit/Masonry" target="_blank" rel="noopener noreferrer">Masonry<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">强大的 Autolayout 封装库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/SnapKit/SnapKit" target="_blank" rel="noopener noreferrer">SnapKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Masonry 的 Swift 版本</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/gsdios/SDAutoLayout" target="_blank" rel="noopener noreferrer">SDAutoLayout<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">最简单易用的 Autolayout 库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/zhenglibao/FlexLib" target="_blank" rel="noopener noreferrer">FlexLib<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 flexbox 的 iOS 布局框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/youngsoft/MyLinearLayout" target="_blank" rel="noopener noreferrer">MyLinearLayout<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 界面视图布局框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/youngsoft/TangramKit" target="_blank" rel="noopener noreferrer">TangramKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">MyLinearLayout 的 Swift 版</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/lixiang1994/AutoInch" target="_blank" rel="noopener noreferrer">AutoInch<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">优雅的 iPhone 全尺寸 / 等比例精准适配工具</td></tr></tbody></table> <h3 id="独立视图渲染框架"><a href="#独立视图渲染框架" class="header-anchor">#</a> 独立视图渲染框架</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/TextureGroup/Texture" target="_blank" rel="noopener noreferrer">Texture<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">使复杂的界面依然能够保持流畅和响应</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/facebook/componentkit" target="_blank" rel="noopener noreferrer">componentkit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">用声明性的方法来构建 UI</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Tencent/QMUI_iOS" target="_blank" rel="noopener noreferrer">QMUI_iOS<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">提高项目 UI 开发效率的解决方案</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/CosmicMind/Material" target="_blank" rel="noopener noreferrer">Material<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">用于创建漂亮应用程序的 UI/UX 框架</td></tr></tbody></table> <h3 id="视图动画"><a href="#视图动画" class="header-anchor">#</a> 视图动画</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/airbnb/lottie-ios" target="_blank" rel="noopener noreferrer">lottie<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Airbnb 开源的动画库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Tencent/vap" target="_blank" rel="noopener noreferrer">VAP<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">企鹅电竞开发播放特效动画的实现方案</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/tigerAndBull/TABAnimated" target="_blank" rel="noopener noreferrer">TABAnimated<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">原生骨架屏</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/LeFal/WaterDrops" target="_blank" rel="noopener noreferrer">WaterDrops<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">水滴动画</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/MengTo/Spring" target="_blank" rel="noopener noreferrer">Spring<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Swift 版本的 iOS 动画库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/AugustRush/Stellar" target="_blank" rel="noopener noreferrer">Stellar<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个神奇的物理动画库</td></tr></tbody></table> <h3 id="视图转场动画"><a href="#视图转场动画" class="header-anchor">#</a> 视图转场动画</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/HeroTransitions/Hero" target="_blank" rel="noopener noreferrer">Hero<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">界面切换转场动画库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/wazrx/XWTransition" target="_blank" rel="noopener noreferrer">XWTransition<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">自定义转场工具</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Yalantis/StarWars.iOS" target="_blank" rel="noopener noreferrer">StarWars.iOS<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://github.com/Yalantis/StarWars.iOS/raw/master/preview.gif" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>实现将视图控制器粉碎成小块的动画</td></tr></tbody></table> <h3 id="视图调试"><a href="#视图调试" class="header-anchor">#</a> 视图调试</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/indragiek/InAppViewDebugger" target="_blank" rel="noopener noreferrer">InAppViewDebugger<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">带有 3D 快照视图和层次结构视图的视图调试器</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/yulingtianxia/TBUIAutoTest" target="_blank" rel="noopener noreferrer">TBUIAutoTest<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">为 UIAutomation 添加自动化测试标签</td></tr></tbody></table> <h3 id="测试视图"><a href="#测试视图" class="header-anchor">#</a> 测试视图</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/zixun/GodEye" target="_blank" rel="noopener noreferrer">GodEye<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">多功能监控测试库</td></tr></tbody></table> <h2 id="自定义视图"><a href="#自定义视图" class="header-anchor">#</a> 自定义视图</h2> <h3 id="轮播滚动视图"><a href="#轮播滚动视图" class="header-anchor">#</a> 轮播滚动视图</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/nicklockwood/iCarousel" target="_blank" rel="noopener noreferrer">iCarousel<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">好用的轮播滚动视图</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/pujiaxin33/JXCategoryView" target="_blank" rel="noopener noreferrer">JXCategoryView<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">分类切换滚动视图</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/pujiaxin33/JXSegmentedView" target="_blank" rel="noopener noreferrer">JXSegmentedView<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">JXCategoryView 的 Swift 版本</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/alibaba/LazyScrollView" target="_blank" rel="noopener noreferrer">LazyScrollView<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">支持视图复用的高性能滚动视图</td></tr></tbody></table> <h3 id="弹窗"><a href="#弹窗" class="header-anchor">#</a> 弹窗</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/SPStore/SPAlertController" target="_blank" rel="noopener noreferrer">SPAlertController<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">微信原生风格的对话框</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/podkovyrin/DWAlertController" target="_blank" rel="noopener noreferrer">DWAlertController<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">自定义弹窗</td></tr></tbody></table> <h3 id="浏览视图-图片、相册、文件"><a href="#浏览视图-图片、相册、文件" class="header-anchor">#</a> 浏览视图 (图片、相册、文件)</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/indulgeIn/YBImageBrowser" target="_blank" rel="noopener noreferrer">YBImageBrowser<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">高性能图片浏览器（支持视频）</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/longitachi/ZLPhotoBrowser" target="_blank" rel="noopener noreferrer">ZLPhotoBrowser<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">方便易用的相册多选框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/jinht/DocViewer" target="_blank" rel="noopener noreferrer">DocViewer<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">文档 / 文件查看器</td></tr></tbody></table> <h3 id="引导页-广告视图"><a href="#引导页-广告视图" class="header-anchor">#</a> 引导页 / 广告视图</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/CoderZhuXH/XHLaunchAd" target="_blank" rel="noopener noreferrer">XHLaunchAd<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">开屏广告</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/mamaral/Onboard" target="_blank" rel="noopener noreferrer">Onboard<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">几行代码创建引导页</td></tr></tbody></table> <h3 id="自定义按钮"><a href="#自定义按钮" class="header-anchor">#</a> 自定义按钮</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/jkpang/PPNumberButton" target="_blank" rel="noopener noreferrer">PPNumberButton<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">高度可定制性商品计数按钮</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/jkpang/PPNumberButtonSwift" target="_blank" rel="noopener noreferrer">PPNumberButtonSwift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">PPNumberButton 的 Swift 版本</td></tr></tbody></table> <h3 id="选择视图"><a href="#选择视图" class="header-anchor">#</a> 选择视图</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/xiaozhuxiong121/PGPickerView" target="_blank" rel="noopener noreferrer">PGPickerView<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">自定义选择器</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/xiaozhuxiong121/PGDatePicker" target="_blank" rel="noopener noreferrer">PGDatePicker<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">日期选择器</td></tr></tbody></table> <h3 id="导航视图-tabbar、navibar"><a href="#导航视图-tabbar、navibar" class="header-anchor">#</a> 导航视图 (TabBar、NaviBar)</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/JunAILiang/JMTabBarController" target="_blank" rel="noopener noreferrer">JMTabBarController<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">自定义 TabBar</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/hussc/PTCardTabBar" target="_blank" rel="noopener noreferrer">PTCardTabBar<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">卡片样式 TabBar</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/ChenYilong/CYLTabBarController" target="_blank" rel="noopener noreferrer">CYLTabBarController<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://camo.githubusercontent.com/e4fec0bb7a492d2982da0b131b49cfe7777c4b1e/68747470733a2f2f747661312e73696e61696d672e636e2f6c617267652f30303679386d4e366c7931673675716f68666977326733306364303368646f702e676966" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>支持 Lottie 动画的 TabBar</td></tr></tbody></table> <h3 id="功能视图-搜索、手势、二维码"><a href="#功能视图-搜索、手势、二维码" class="header-anchor">#</a> 功能视图 (搜索、手势、二维码...)</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/ko1o/PYSearch" target="_blank" rel="noopener noreferrer">PYSearch<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">搜索控制器</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/iosdeveloperpanc/PCGestureUnlock" target="_blank" rel="noopener noreferrer">PCGestureUnlock<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">手势解锁</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/MxABC/LBXScan" target="_blank" rel="noopener noreferrer">LBXScan<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">二维码扫描</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/MxABC/swiftScan" target="_blank" rel="noopener noreferrer">swiftScan<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">二维码扫描 Swift 版本</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/EFPrefix/EFQRCode" target="_blank" rel="noopener noreferrer">EFQRCode<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://raw.githubusercontent.com/EFPrefix/EFQRCode/assets/EFQRCode.jpg" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div> 艺术二维码生成</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/pujiaxin33/JXScratchView" target="_blank" rel="noopener noreferrer">JXScratchView<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">万能的刮刮乐控件</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/pujiaxin33/JXWeChatFloatView" target="_blank" rel="noopener noreferrer">JXWeChatFloatView<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">高仿微信文章悬浮球</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/MessageKit/MessageKit" target="_blank" rel="noopener noreferrer">MessageKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">聊天界面</td></tr></tbody></table> <h3 id="系统功能增强视图-视图圆角"><a href="#系统功能增强视图-视图圆角" class="header-anchor">#</a> 系统功能增强视图 (视图圆角...)</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/liuzhiyi1992/ZYCornerRadius" target="_blank" rel="noopener noreferrer">ZYCornerRadius<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">设置圆角</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/MaximKotliar/Bartinter" target="_blank" rel="noopener noreferrer">Bartinter<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">状态栏外观管理组件</td></tr></tbody></table> <h3 id="列表视图"><a href="#列表视图" class="header-anchor">#</a> 列表视图</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/Instagram/IGListKit" target="_blank" rel="noopener noreferrer">IGListKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">用数据驱动创造更为快速灵活的列表控件</td></tr></tbody></table> <h3 id="列表视图增强"><a href="#列表视图增强" class="header-anchor">#</a> 列表视图增强</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/CoderMJLee/MJRefresh" target="_blank" rel="noopener noreferrer">MJRefresh<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">下拉刷新控件</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/dzenbot/DZNEmptyDataSet" target="_blank" rel="noopener noreferrer">DZNEmptyDataSet<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">列表数据为空时的占位图</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Xiaoye220/EmptyDataSet-Swift" target="_blank" rel="noopener noreferrer">EmptyDataSet-Swift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">列表数据为空时的占位图</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/forkingdog/UITableView-FDTemplateLayoutCell" target="_blank" rel="noopener noreferrer">UITableView-FDTemplateLayoutCell<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">带有高度缓存功能的高度自适应 Cell 框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/MortimerGoro/MGSwipeTableCell" target="_blank" rel="noopener noreferrer">MGSwipeTableCell<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">给 cell 添加各种样式的侧滑按钮</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/ChavezChen/CWLateralSlide" target="_blank" rel="noopener noreferrer">CWLateralSlide<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一行代码集成 0 耦合侧滑抽屉</td></tr></tbody></table> <h2 id="网络功能"><a href="#网络功能" class="header-anchor">#</a> 网络功能</h2> <h3 id="网络请求"><a href="#网络请求" class="header-anchor">#</a> 网络请求</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/AFNetworking/AFNetworking" target="_blank" rel="noopener noreferrer">AFNetworking<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">强大好用的网络连接库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Alamofire/Alamofire" target="_blank" rel="noopener noreferrer">Alamofire<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Swift 网络请求库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Moya/Moya" target="_blank" rel="noopener noreferrer">Moya<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">提供网络抽象层，封装 Alamofire</td></tr></tbody></table> <h3 id="网络下载"><a href="#网络下载" class="header-anchor">#</a> 网络下载</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/Danie1s/Tiercel" target="_blank" rel="noopener noreferrer">Tiercel<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">支持原生级别后台下载</td></tr></tbody></table> <h3 id="网络扩展"><a href="#网络扩展" class="header-anchor">#</a> 网络扩展</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/zhuhaow/NEKit" target="_blank" rel="noopener noreferrer">NEKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">网络扩展工具</td></tr></tbody></table> <h3 id="web相关"><a href="#web相关" class="header-anchor">#</a> Web 相关</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/Tencent/VasSonic" target="_blank" rel="noopener noreferrer">VasSonic<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">加快网页首屏加载速度</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/ming1016/STMURLCache" target="_blank" rel="noopener noreferrer">STMURLCache<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 预加载 Web 页面方案</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/marcuswestin/WebViewJavascriptBridge" target="_blank" rel="noopener noreferrer">WebViewJavascriptBridge<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Objective-C 与 JavaScript 进行消息互通的三方库</td></tr></tbody></table> <h3 id="socket"><a href="#socket" class="header-anchor">#</a> Socket</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/robbiehanson/CocoaAsyncSocket" target="_blank" rel="noopener noreferrer">CocoaAsyncSocket<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 强大的 Socket 框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/facebook/SocketRocket" target="_blank" rel="noopener noreferrer">SocketRocket<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个非常好用的 WebSocket 开源库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/daltoniam/Starscream" target="_blank" rel="noopener noreferrer">Starscream<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Swift 版本的 WebSocket 开源库</td></tr></tbody></table> <h3 id="http服务器"><a href="#http服务器" class="header-anchor">#</a> Http 服务器</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/swisspol/GCDWebServer" target="_blank" rel="noopener noreferrer">GCDWebServer<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">在 iOS 上搭建 Http 服务的开源库</td></tr></tbody></table> <h3 id="邮件"><a href="#邮件" class="header-anchor">#</a> 邮件</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/onevcat/Hedwig" target="_blank" rel="noopener noreferrer">Hedwig<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://cloud.githubusercontent.com/assets/1019875/21935666/b7f8af46-d9f1-11e6-85d7-1cb4bc025226.png" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>  向 SMTP 服务器发送电子邮件</td></tr></tbody></table> <h3 id="网络检测"><a href="#网络检测" class="header-anchor">#</a> 网络检测</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/dustturtle/RealReachability" target="_blank" rel="noopener noreferrer">RealReachability<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">检测网络的真实连接情况</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/netguru/ResponseDetective" target="_blank" rel="noopener noreferrer">ResponseDetective<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://github.com/netguru/ResponseDetective/raw/develop/Images/Header.png" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>截取应用程序和服务器之间的所有传出请求和传入响应</td></tr></tbody></table> <h2 id="图像与绘图相关功能"><a href="#图像与绘图相关功能" class="header-anchor">#</a> 图像与绘图相关功能</h2> <h3 id="图像处理"><a href="#图像处理" class="header-anchor">#</a> 图像处理</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/BradLarson/GPUImage" target="_blank" rel="noopener noreferrer">GPUImage<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 OpenGL ES 2.0 的图像处理库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Tencent/LKImageKit" target="_blank" rel="noopener noreferrer">LKImageKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">高性能的图片框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/kean/Nuke" target="_blank" rel="noopener noreferrer">Nuke<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Swift 版的图片加载库</td></tr></tbody></table> <h3 id="图形与绘图"><a href="#图形与绘图" class="header-anchor">#</a> 图形与绘图</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/exyte/Macaw" target="_blank" rel="noopener noreferrer">Macaw<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://raw.githubusercontent.com/exyte/Macaw/master/logo.png" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>矢量图形库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/onmyway133/RoughSwift" target="_blank" rel="noopener noreferrer">RoughSwift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://github.com/onmyway133/RoughSwift/raw/master/Screenshots/s.png" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>在手绘、素描、漫画风格中轻松地制作形状</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Harley-xk/MaLiang" target="_blank" rel="noopener noreferrer">MaLiang<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 Metal 的涂鸦绘图库</td></tr></tbody></table> <h3 id="图表"><a href="#图表" class="header-anchor">#</a> 图表</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/AAChartModel/AAChartKit" target="_blank" rel="noopener noreferrer">AAChartKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://raw.githubusercontent.com/AAChartModel/loadHtmlCssJsDemo-master/master/AAChartKit/AAChartKit-Logo.png" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>可视化图表框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/danielgindi/Charts" target="_blank" rel="noopener noreferrer">Charts<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个功能强大的图表绘制库</td></tr></tbody></table> <h3 id="色彩"><a href="#色彩" class="header-anchor">#</a> 色彩</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/viccalexander/Chameleon" target="_blank" rel="noopener noreferrer">Chameleon<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个强大的颜色扩展库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/dsxNiubility/Wonderful" target="_blank" rel="noopener noreferrer">Wonderful<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个可以扩展颜色的库，提供了文本的跑马灯功能</td></tr></tbody></table> <h3 id="富文本"><a href="#富文本" class="header-anchor">#</a> 富文本</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/GitHawkApp/StyledTextKit" target="_blank" rel="noopener noreferrer">StyledTextKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://github.com/GitHawkApp/StyledTextKit/raw/master/images/banner.png" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div>声明性的带属性字符串库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/meitu/MPITextKit" target="_blank" rel="noopener noreferrer">MPITextKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 TextKit 的富文本框架</td></tr></tbody></table> <h2 id="音视频相关功能"><a href="#音视频相关功能" class="header-anchor">#</a> 音视频相关功能</h2> <h3 id="播放器"><a href="#播放器" class="header-anchor">#</a> 播放器</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/imoreapps/ffmpeg-avplayer-for-ios-tvos" target="_blank" rel="noopener noreferrer">ffmpeg-avplayer-for-ios-tvos<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 FFmpeg 的播放器</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/bilibili/ijkplayer" target="_blank" rel="noopener noreferrer">ijkplayer<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">bilibili 开源的基于 FFmpeg 的视频播放器</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/tencentyun/SuperPlayer_iOS" target="_blank" rel="noopener noreferrer">SuperPlayer_iOS<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">腾讯云移动直播的播放器</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/libobjc/SGPlayer" target="_blank" rel="noopener noreferrer">SGPlayer<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 FFmpeg 的媒体资源播放器框架</td></tr></tbody></table> <h3 id="编解码"><a href="#编解码" class="header-anchor">#</a> 编解码</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/FFmpeg/FFmpeg" target="_blank" rel="noopener noreferrer">FFmpeg<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">强大的音视频编解码库</td></tr></tbody></table> <h3 id="弹幕"><a href="#弹幕" class="header-anchor">#</a> 弹幕</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/iOS-Strikers/OCBarrage" target="_blank" rel="noopener noreferrer">OCBarrage<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 弹幕库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/panghaijiao/HJDanmakuDemo" target="_blank" rel="noopener noreferrer">HJDanmakuDemo<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 弹幕解决方案</td></tr></tbody></table> <h2 id="安全相关"><a href="#安全相关" class="header-anchor">#</a> 安全相关</h2> <h3 id="加解密"><a href="#加解密" class="header-anchor">#</a> 加解密</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/MxABC/DevDataTool" target="_blank" rel="noopener noreferrer">DevDataTool<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">加解密</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/krzyzanowskim/CryptoSwift" target="_blank" rel="noopener noreferrer">CryptoSwift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">加密框架</td></tr></tbody></table> <h3 id="权限请求"><a href="#权限请求" class="header-anchor">#</a> 权限请求</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/nickoneill/PermissionScope" target="_blank" rel="noopener noreferrer">PermissionScope<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 各种权限请求视图</td></tr></tbody></table> <h3 id="app防护"><a href="#app防护" class="header-anchor">#</a> APP 防护</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/securing/IOSSecuritySuite" target="_blank" rel="noopener noreferrer">IOSSecuritySuite<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://github.com/securing/IOSSecuritySuite/raw/master/logo.png" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div> iOS 平台安全与防篡改 Swift 库</td></tr></tbody></table> <h2 id="数据与文件处理"><a href="#数据与文件处理" class="header-anchor">#</a> 数据与文件处理</h2> <h3 id="数据解析"><a href="#数据解析" class="header-anchor">#</a> 数据解析</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/alibaba/HandyJSON" target="_blank" rel="noopener noreferrer">HandyJSON<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Json 序列化 / 反序列化库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/SwiftyJSON/SwiftyJSON" target="_blank" rel="noopener noreferrer">SwiftyJSON<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">Json 转模型的框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Ikiga/IkigaJSON" target="_blank" rel="noopener noreferrer">IkigaJSON<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">高性能的 Json 解析框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/kakaopensource/KakaJSON" target="_blank" rel="noopener noreferrer">KakaJSON<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">快速 Json 转模型的框架</td></tr></tbody></table> <h3 id="文件管理"><a href="#文件管理" class="header-anchor">#</a> 文件管理</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/nvzqz/FileKit" target="_blank" rel="noopener noreferrer">FileKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个 Swift 文件管理库</td></tr></tbody></table> <h3 id="压缩解压缩"><a href="#压缩解压缩" class="header-anchor">#</a> 压缩解压缩</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/ZipArchive/ZipArchive" target="_blank" rel="noopener noreferrer">ZipArchive<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">压缩、解压缩框架</td></tr></tbody></table> <h2 id="数据归档"><a href="#数据归档" class="header-anchor">#</a> 数据归档</h2> <h3 id="数据库"><a href="#数据库" class="header-anchor">#</a> 数据库</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/ccgus/fmdb" target="_blank" rel="noopener noreferrer">fmdb<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">好用的 SQLite 访问框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Zepo/GYDataCenter" target="_blank" rel="noopener noreferrer">GYDataCenter<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 FMDB 提供了面向对象的接口</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/Tencent/wcdb" target="_blank" rel="noopener noreferrer">wcdb<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">腾讯开源的移动数据库框架</td></tr></tbody></table> <h3 id="序列化"><a href="#序列化" class="header-anchor">#</a> 序列化</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/Tencent/MMKV" target="_blank" rel="noopener noreferrer">MMKV<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">基于 mmap 内存映射的 key-value 组件</td></tr></tbody></table> <h3 id="钥匙串"><a href="#钥匙串" class="header-anchor">#</a> 钥匙串</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/square/Valet" target="_blank" rel="noopener noreferrer">Valet<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个用来操作钥匙串的封装库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/soffes/SAMKeychain" target="_blank" rel="noopener noreferrer">SAMKeychain<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">一个用来操作钥匙串的封装库</td></tr></tbody></table> <h2 id="日志与异常处理"><a href="#日志与异常处理" class="header-anchor">#</a> 日志与异常处理</h2> <h3 id="日志记录"><a href="#日志记录" class="header-anchor">#</a> 日志记录</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/CocoaLumberjack/CocoaLumberjack" target="_blank" rel="noopener noreferrer">CocoaLumberjack<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">功能强大的日志采集框架</td></tr></tbody></table> <h3 id="异常检测"><a href="#异常检测" class="header-anchor">#</a> 异常检测</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/Tencent/MLeaksFinder" target="_blank" rel="noopener noreferrer">MLeaksFinder<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">自动内存泄漏检测工具</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/facebook/FBRetainCycleDetector" target="_blank" rel="noopener noreferrer">FBRetainCycleDetector<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">循环引用检测框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/maniackk/TimeProfiler" target="_blank" rel="noopener noreferrer">TimeProfiler<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">监控所有的 OC 方法耗时</td></tr></tbody></table> <h3 id="异常处理"><a href="#异常处理" class="header-anchor">#</a> 异常处理</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/chenfanfang/AvoidCrash" target="_blank" rel="noopener noreferrer">AvoidCrash<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">用来防止崩溃的框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/ValiantCat/XXShield" target="_blank" rel="noopener noreferrer">XXShield<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">用来防止崩溃的框架，捕获异常状态下的崩溃信息</td></tr></tbody></table> <h2 id="系统相关"><a href="#系统相关" class="header-anchor">#</a> 系统相关</h2> <h3 id="系统信息"><a href="#系统信息" class="header-anchor">#</a> 系统信息</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/devicekit/DeviceKit" target="_blank" rel="noopener noreferrer">DeviceKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">获取设备信息</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/dani-gavrilov/GDPerformanceView-Swift" target="_blank" rel="noopener noreferrer">GDPerformanceView-Swift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://github.com/dani-gavrilov/GDPerformanceView-Swift/raw/master/performance_view_4.PNG?raw=true" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div> 显示 FPS, CPU, 内存等信息</td></tr></tbody></table> <h3 id="内购"><a href="#内购" class="header-anchor">#</a> 内购</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/bizz84/SwiftyStoreKit" target="_blank" rel="noopener noreferrer">SwiftyStoreKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">应用内购买框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/beiliao-mobile/BLIAP" target="_blank" rel="noopener noreferrer">BLIAP<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">最大限度保证移动端 IAP 安全的示例代码</td></tr></tbody></table> <h3 id="系统扩展"><a href="#系统扩展" class="header-anchor">#</a> 系统扩展</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/shaojiankui/JKCategories" target="_blank" rel="noopener noreferrer">JKCategories<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">给系统库添加一些有用的扩展</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/SwifterSwift/SwifterSwift" target="_blank" rel="noopener noreferrer">SwifterSwift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">为系统库提供了丰富的扩展功能</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/SwiftUIX/SwiftUIX" target="_blank" rel="noopener noreferrer">SwiftUIX<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">为 SwiftUI 标准库提供了大量的组件、扩展和实用工具</td></tr></tbody></table> <h2 id="其他功能"><a href="#其他功能" class="header-anchor">#</a> 其他功能</h2> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/hackiftekhar/IQKeyboardManager" target="_blank" rel="noopener noreferrer">IQKeyboardManager<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">防止键盘遮挡输入框</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/nvzqz/RandomKit" target="_blank" rel="noopener noreferrer">RandomKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">轻松生成随机数据</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/naoty/Timepiece" target="_blank" rel="noopener noreferrer">Timepiece<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">时间处理框架</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/lovoo/NSFWDetector" target="_blank" rel="noopener noreferrer">NSFWDetector<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">使用 CreateML 来区分色情 / 裸体和适当的图片</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/realm/SwiftLint" target="_blank" rel="noopener noreferrer">SwiftLint<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">检查 Swift 代码风格和规定的工具</td></tr></tbody></table> <h2 id="异步编程与响应式框架"><a href="#异步编程与响应式框架" class="header-anchor">#</a> 异步编程与响应式框架</h2> <h3 id="异步编程"><a href="#异步编程" class="header-anchor">#</a> 异步编程</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/alibaba/coobjc" target="_blank" rel="noopener noreferrer">coobjc<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">提供了协程功能</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/mxcl/PromiseKit" target="_blank" rel="noopener noreferrer">PromiseKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">简化了异步编程</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/google/promises" target="_blank" rel="noopener noreferrer">promises<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">方便编写异步代码</td></tr></tbody></table> <h3 id="响应式"><a href="#响应式" class="header-anchor">#</a> 响应式</h3> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/ReactiveX/RxSwift" target="_blank" rel="noopener noreferrer">RxSwift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">强大的响应式编程框架</td></tr></tbody></table> <h2 id="热更新"><a href="#热更新" class="header-anchor">#</a> 热更新</h2> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/bang590/JSPatch" target="_blank" rel="noopener noreferrer">JSPatch<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">用 JavaScript 书写原生 iOS APP</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/YPLiang19/Mango" target="_blank" rel="noopener noreferrer">Mango<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">替换任何 Objective-C 方法</td></tr></tbody></table> <h2 id="aop"><a href="#aop" class="header-anchor">#</a> AOP</h2> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/steipete/Aspects" target="_blank" rel="noopener noreferrer">Aspects<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">在每一个类和实例中存在的方法里面加入任何代码</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/eleme/Stinger" target="_blank" rel="noopener noreferrer">Stinger<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">在原方法的 前 / 替换 / 后位置插入 (或替换) 代码</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/steipete/InterposeKit" target="_blank" rel="noopener noreferrer">InterposeKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">作用与 Aspects 相同</td></tr></tbody></table> <h2 id="综合框架"><a href="#综合框架" class="header-anchor">#</a> 综合框架</h2> <table><thead><tr><th style="text-align:center;">Repository</th> <th style="text-align:left;"><div align="center" style="width:400px;">Description</div></th></tr></thead> <tbody><tr><td style="text-align:center;"><a href="https://github.com/ibireme/YYKit" target="_blank" rel="noopener noreferrer">YYKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">包含一组功能丰富的 iOS 组件</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/LeoMobileDeveloper/QTEventBus" target="_blank" rel="noopener noreferrer">QTEventBus<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 事件总线</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/indulgeIn/YBTaskScheduler" target="_blank" rel="noopener noreferrer">YBTaskScheduler<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">iOS 任务调度器，为 CPU 和内存减负（用于性能优化）</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/SvenTiigi/ValidatedPropertyKit" target="_blank" rel="noopener noreferrer">ValidatedPropertyKit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;"><div align="center" style="width:350px;"><img src="https://raw.githubusercontent.com/SvenTiigi/ValidatedPropertyKit/gh-pages/readMeAssets/ValidatedPropertyKit.gif" alt="" loading="lazy" style="min-width:100px;min-height:100px;background:url() no-repeat center;background-size:30px 30px;"></div> 通过属性包装器轻松验证属性</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/imlifengfeng/FFRouter" target="_blank" rel="noopener noreferrer">FFRouter<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">强大、易用、支持 URL Rewrite 的 iOS 路由库</td></tr> <tr><td style="text-align:center;"><a href="https://github.com/2d-inc/Flare-Swift" target="_blank" rel="noopener noreferrer">Flare-Swift<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td style="text-align:left;">强大的设计和动画工具</td></tr></tbody></table> <hr> <p>不定期更新！
未完待续...</p></div> <footer class="page-edit" style="display:none;"><!----> <!----></footer> <!----> <!----></main> <!----> <div class="comments-wrapper" data-v-0cb1c278><div class="valine-wrapper"><div id="valine"></div></div></div></div></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-a81d141e data-v-a81d141e><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-a81d141e><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-a81d141e></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-a81d141e></path></svg></div><canvas id="vuepress-canvas-ribbon"></canvas><div class="my-popup" style="display:none;" data-v-3414bdeb><div class="my-popup-container" data-v-3414bdeb><div class="my-popup-exit" data-v-3414bdeb></div> <img src="" alt data-v-3414bdeb></div></div><div data-v-2ebabc0c></div><div class="kanbanniang" data-v-3b0f9b07><div class="banniang-container" style="display:;" data-v-3b0f9b07><div class="messageBox" style="right:68px;bottom:230px;display:none;" data-v-3b0f9b07>
      欢迎来到 KnightSama‘s Blog
    </div> <div class="operation" style="right:90px;bottom:40px;display:;" data-v-3b0f9b07><i class="kbnfont kbn-ban-home ban-home" data-v-3b0f9b07></i> <i class="kbnfont kbn-ban-message message" data-v-3b0f9b07></i> <i class="kbnfont kbn-ban-close close" data-v-3b0f9b07></i> <a target="_blank" href="https://vuepress-theme-reco.recoluan.com/views/plugins/kanbanniang.html" data-v-3b0f9b07><i class="kbnfont kbn-ban-info info" data-v-3b0f9b07></i></a> <i class="kbnfont kbn-ban-theme skin" style="display:;" data-v-3b0f9b07></i></div> <canvas id="banniang" width="200" height="260" class="live2d" style="right:90px;bottom:-20px;opacity:0.9;" data-v-3b0f9b07></canvas></div> <div class="showBanNiang" style="display:none;" data-v-3b0f9b07>
    看板娘
  </div></div></div></div>
    <script src="/assets/js/app.a2483de7.js" defer></script><script src="/assets/js/4.0078dadf.js" defer></script><script src="/assets/js/1.c3e7d2b0.js" defer></script><script src="/assets/js/13.229fa478.js" defer></script>
  </body>
</html>
